#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<vector>
#include<algorithm>
#include <tuple>
#include <cstring>
#include <cstdio>

using namespace std;

//vector<int> maximumSumQueries(vector<int>& nums1, vector<int>& nums2, vector<vector<int>>& queries) {
//    vector<pair<int, int>> sum;
//    vector<tuple<int, int, int>> sortque;
//    vector<int> res(queries.size(), -1);
//    for (int i = 0; i < nums1.size(); i++)
//        sum.push_back({ nums1[i] + nums2[i],i });
//
//    for (int i = 0; i < queries.size(); i++)
//        sortque.emplace_back(i, queries[i][0], queries[i][1]);
//
//    sort(sum.begin(), sum.end());
//    sort(sortque.begin(), sortque.end(), [](tuple<int, int, int>& a, tuple<int, int, int>& b) {
//        return get<1>(a) > get<1>(b) && get<2>(a) > get<2>(b);
//        });
//
//    for (int j = 0; j < sortque.size(); j++)
//    {
//        tuple<int, int, int>& tmp = sortque[j];
//        int x = get<1>(tmp), y = get<2>(tmp);
//        if (j > 0 && get<1>(sortque[j - 1]) == x && get<2>(sortque[j - 1]) == y)
//        {
//            res[get<0>(tmp)] = res[get<0>(sortque[j - 1])];
//            continue;
//        }
//
//        for (int i = sum.size() - 1; i >= 0; i--)
//        {
//            int t = sum[i].second;
//            if (nums1[t] >= x && nums2[t] >= y)
//            {
//                res[get<0>(tmp)] = (sum[i].first);
//                break;
//            }
//        }
//    }
//    return res;
//}
//
//int main()
//{
//    vector<int> v1 = { 69,3,92,23,19,59,43,19,29,36,41,1,92,66,7,59,91,33,23,16,87,38,65,13,68,53,17,61,10,89,2,98,89,87,49,95,59,13,63,50,27,76,18,85,93,30,32 };
//    vector<int> v2 = { 33,43,48,89,47,28,52,71,12,32,96,89,61,42,21,9,81,42,10,70,72,88,3,49,92,82,5,29,87,70,4,1,82,24,66,53,25,80,12,82,84,13,57,19,96,36,60 };
//    vector<vector<int>> vv = { {22,66} ,{38,34},{38,34},{77,84},{70,92},{96,89},{62,1},{97,9},{54,96},{81,66},{83,80},{11,80} };
//    maximumSumQueries(v1, v2, vv);
//    return 0;
//}
